package com.jerry.lastgomall.live.online;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Vector;

/**
* 直播节目的转发服务器L基于websocket协议
 *
 * 当一个客户端连接onlineServer连接的时候,创建一个OnlineServer实例
 *
 */
//指定一个URI客户可以通过这个URI 连接到我们的webSocket
@ServerEndpoint("/onlineServer")
public class OnlineServer {

    //当前的会话对象 通过session 服务器可以像客户端主动发送消息
    private Session session;
    //建立一个静态的集合 存储所有客户端的实例
    public static Vector<OnlineServer> clients=new Vector<OnlineServer>();


    //建立连接的回调方法 建立连接的时候触发的方法
    @OnOpen
    public void onOpen(Session session){
        this.session=session;
        clients.add((this));    //将当前客户端加入客户端列表
        System.out.println("新连接...");
    }

    @OnClose
    public void onClose(){
        clients.remove(this);
        System.out.println("连接断开...");
    }

    //当客户端向服务器发送消息的时候触发的事件
    @OnMessage
    public void onMessage(String message,Session session){
        //群发消息
        for (OnlineServer client: clients){
            try {
                //客户端发送消息
                client.session.getBasicRemote().sendText(message);
            } catch (IOException e) {
//                e.printStackTrace();
            }
        }
    }
}






























